/**
 * @file double_stack.h
 * @brief 共享栈
 * @author Xavier ZXY (zxy_xavier@163.com)
 * @version : 1.0
 * @date 2022-04-24 03:26
 * 
 */

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 20 /* 存储空间初始分配量 */

typedef int Status; 

typedef int SElemType; /* SElemType类型根据实际情况而定，这里假设为int */


/**
 * @brief 两栈共享空间
 */
typedef struct 
{
        SElemType data[MAXSIZE];
        int top1;	/* 栈1栈顶指针 */
        int top2;	/* 栈2栈顶指针 */
}SqDoubleStack;

//显示元素
Status visit(SElemType c);


//构造一个空栈
Status InitStack(SqDoubleStack *S);


//置为空栈
Status ClearStack(SqDoubleStack *S);

//是否为空栈
Status StackEmpty(SqDoubleStack S);


//栈中元素的个数
int StackLength(SqDoubleStack S);


//插入新的栈顶元素e
Status Push(SqDoubleStack *S,SElemType e,int stackNumber);

//弹出栈顶元素并储存在e中
Status Pop(SqDoubleStack *S,SElemType *e,int stackNumber);

//遍历栈中的所有元素
Status StackTraverse(SqDoubleStack S);
